package com.itheima.health.dao;

import com.github.pagehelper.Page;
import com.itheima.health.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author ：xu
 * @date ：Created in 2019/7/1
 * @description ：用户dao
 * @version: 1.0
 */
public interface UserDao {

    /**
     * 通过id查询用户信息
     *
     * @param id
     * @return
     */
    User findById(Integer id);


    /**
     * 通过用户名查询用户信息
     *
     * @param userName
     * @return
     */
    User findByUserName(String userName);

    /**
     * 新增用户
     *
     * @param user
     */
    void add(User user);

    /**
     * 添加用户和角色的中间表
     *
     * @param map
     */
    void addUserAndRole(Map map);

    /**
     * 分页查询
     *
     * @param queryString
     * @return
     */
    Page<User> selectByCondition(@Param("queryString") String queryString);

    /**
     * 通过用户id查询中间表获取用户的角色信息
     *
     * @param id
     * @return
     */
    List<Integer> findRoleIdsByUserId(@Param("id") Integer id);

    /**
     * 通过userId 编辑用户
     * 在编辑的时候要先通过id删除中间表数据 再进行更新
     * @param user
     */
    void editUserById(User user);

    /**
     * 根据用户id删除角色信息的中间表
     * @param id
     */
    void deleteRoleIds(Integer id);

    /**
     * 通过id删除用户
     * @param id
     */
    void deleteUserByUserId(Integer id);
}
